{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "initial_id",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-09T16:17:53.779842Z",
     "start_time": "2025-05-09T16:17:53.757841Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/mindspore/miniconda/envs/jupyter/lib/python3.9/site-packages/numpy/core/getlimits.py:549: UserWarning: The value of the smallest subnormal for <class 'numpy.float64'> type is zero.\n",
      "  setattr(self, word, getattr(machar, word).flat[0])\n",
      "/home/mindspore/miniconda/envs/jupyter/lib/python3.9/site-packages/numpy/core/getlimits.py:89: UserWarning: The value of the smallest subnormal for <class 'numpy.float64'> type is zero.\n",
      "  return self._float_to_str(self.smallest_subnormal)\n",
      "/home/mindspore/miniconda/envs/jupyter/lib/python3.9/site-packages/numpy/core/getlimits.py:549: UserWarning: The value of the smallest subnormal for <class 'numpy.float32'> type is zero.\n",
      "  setattr(self, word, getattr(machar, word).flat[0])\n",
      "/home/mindspore/miniconda/envs/jupyter/lib/python3.9/site-packages/numpy/core/getlimits.py:89: UserWarning: The value of the smallest subnormal for <class 'numpy.float32'> type is zero.\n",
      "  return self._float_to_str(self.smallest_subnormal)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "env: HF_ENDPOINT=https://hf-mirror.com\n"
     ]
    }
   ],
   "source": [
    "\n",
    "# !pip install mindnlp==0.4.0 -i https://pypi.tuna.tsinghua.edu.cn/simple\n",
    "# !pip install jieba -i https://pypi.tuna.tsinghua.edu.cn/simple\n",
    "import mindspore\n",
    "from mindspore import ParallelMode\n",
    "mindspore.set_auto_parallel_context(parallel_mode=ParallelMode.DATA_PARALLEL)\n",
    "\n",
    "%env HF_ENDPOINT=https://hf-mirror.com"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8efe16b8f63c0c09",
   "metadata": {},
   "source": [
    "# 数据处理"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "66b1bf449eb247bb",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-09T16:17:53.794840Z",
     "start_time": "2025-05-09T16:17:53.788838Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[WARNING] ME(8260:281473501487136,MainProcess):2025-05-10-11:50:18.988.446 [mindspore/context.py:1335] For 'context.set_context', the parameter 'ascend_config' will be deprecated and removed in a future version. Please use the api mindspore.device_context.ascend.op_precision.precision_mode(),\n",
      "                                                       mindspore.device_context.ascend.op_precision.op_precision_mode(),\n",
      "                                                       mindspore.device_context.ascend.op_precision.matmul_allow_hf32(),\n",
      "                                                       mindspore.device_context.ascend.op_precision.conv_allow_hf32(),\n",
      "                                                       mindspore.device_context.ascend.op_tuning.op_compile() instead.\n",
      "Building prefix dict from the default dictionary ...\n",
      "Loading model from cache /tmp/jieba.cache\n",
      "Loading model cost 1.032 seconds.\n",
      "Prefix dict has been built successfully.\n"
     ]
    }
   ],
   "source": [
    "from mindnlp.utils import http_get\n",
    "url = 'https://download.mindspore.cn/toolkits/mindnlp/dataset/text_generation/nlpcc2017/train_with_summ.txt'\n",
    "path = http_get(url,'./')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "2dc69a567256d3a4",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-09T16:17:55.362606Z",
     "start_time": "2025-05-09T16:17:53.829842Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "50000"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from mindspore.dataset import TextFileDataset\n",
    "\n",
    "dataset = TextFileDataset(str(path),shuffle=False)\n",
    "dataset.get_dataset_size()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "b63271a3f50815b1",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-09T16:17:55.409592Z",
     "start_time": "2025-05-09T16:17:55.396595Z"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "train_dataset, test_dataset = dataset.split([0.9,0.1],randomize=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "9aab553e7f839cae",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-09T16:18:02.296345Z",
     "start_time": "2025-05-09T16:17:58.445591Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "dict_keys(['text'])\n",
      "dict_values([Tensor(shape=[], dtype=String, value= '{\"summarization\": \"漳州：今日凌晨，一辆轿车冲出龙文区郭坑立交桥护栏，从十余米高处翻落，车内2人1死1伤\", \"article\": \"8日凌晨3时许，福建省漳州市龙文区郭坑公铁立交桥发生一起交通事故,消防官兵紧急救援。<Paragraph>王文丽<Paragraph>摄<Paragraph>中新网漳州5月8日电<Paragraph>(王文丽<Paragraph>朱必星<Paragraph>高淑萍)记者从福建漳州市消防支队获悉，8日凌晨3时许，福建省漳州市龙文区郭坑公铁立交桥发生一起交通事故，一部轿车冲出护栏，从立交桥上翻落，掉落至十余米高的地面上，事故造成一死一伤。接到报警后，龙文消防大队迅速出动两部消防车和8名官兵前往救援。消防官兵到现场发现，一辆轿车四轮朝天掉落在路面上，车上两人被困，司机被压在轿车的下方，脑部胸部受到严重挤压，副驾驶座上一人严重受伤。消防官兵利用液压扩张器将轿车车门破拆打开，同时联系相关部门用吊车辅助救援。吊车到达事故现场后，利用绳索绑在轿车的四轮上，将轿车整体吊起。由于轿车上有燃油泄漏，消防官兵放弃有作业火花的切割机，改用液压扩张钳和消防斧对严重变形的车体进行破拆。经过救援官兵2个小时的努力，先后将车内两人救出。但遗憾的是，经现场医护人员确认，其中一名被困人员已无生命体征，另外一名伤员被急速送往医院救治。事后经现场目击者介绍，事故原因可能是雨天路滑，再加上车速过快，在转弯时刹车不及，导致整车侧翻冲出护栏，倒翻坠落桥下。消防部门温馨提醒广大司机：雨天易导致路面积水，车子在行进过程中往往会出现打滑现象，当车速过快的时候，很容易造成机动车打滑侧翻的交通事故，驾驶者应当根据天气情况行车，雨天务必减速慢行，避免贪图加快而造成交通事故。(完)\"}')])\n"
     ]
    }
   ],
   "source": [
    "print(next(train_dataset.create_dict_iterator()).keys())\n",
    "print(next(train_dataset.create_dict_iterator()).values())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "4e1520ab720c21fc",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-09T16:18:05.525484Z",
     "start_time": "2025-05-09T16:18:02.330346Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/mindspore/miniconda/envs/jupyter/lib/python3.9/site-packages/mindnlp/transformers/tokenization_utils_base.py:1526: FutureWarning: `clean_up_tokenization_spaces` was not set. It will be set to `True` by default. This behavior will be depracted, and will be then set to `False` by default. \n",
      "  warnings.warn(\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "{'input_ids': Tensor(shape=[4, 300], dtype=Int64, value=\n",
       " [[ 101, 8119,  118 ... 7410,  511,  102],\n",
       "  [ 101, 2476, 3717 ... 4266,  779,  102],\n",
       "  [ 101, 3173,  776 ... 2418,  511,  102],\n",
       "  [ 101, 8119,  118 ... 1217, 4673,  102]]),\n",
       " 'labels': Tensor(shape=[4, 300], dtype=Int64, value=\n",
       " [[ 101, 8119,  118 ... 7410,  511,  102],\n",
       "  [ 101, 2476, 3717 ... 4266,  779,  102],\n",
       "  [ 101, 3173,  776 ... 2418,  511,  102],\n",
       "  [ 101, 8119,  118 ... 1217, 4673,  102]])}"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import json\n",
    "import numpy as np\n",
    "from mindnlp.transformers import BertTokenizer\n",
    "def process_dataset(dataset:TextFileDataset, tokenizer:BertTokenizer, batch_size=6, max_seq_len=1024, shuffle=False):\n",
    "    def read_map(text):\n",
    "        data = json.loads(text.tobytes())\n",
    "        return np.array(data['article']), np.array(data['summarization'])\n",
    "    \n",
    "    def merge_and_pad(article,summary):\n",
    "        tokenized = tokenizer(text=article,text_pair=summary,\n",
    "                              padding='max_length',truncation='only_first',max_length=max_seq_len)\n",
    "        return tokenized['input_ids'], tokenized['input_ids']\n",
    "    dataset = dataset.map(read_map,'text',['article','summary'])\n",
    "    dataset = dataset.map(merge_and_pad,['article','summary'],['input_ids','labels'])\n",
    "    \n",
    "    dataset = dataset.batch(batch_size)\n",
    "    if shuffle:\n",
    "        dataset = dataset.shuffle(batch_size)\n",
    "    return dataset\n",
    "\n",
    "tokenizer = BertTokenizer.from_pretrained('bert-base-chinese')\n",
    "train_dataset = process_dataset(train_dataset, tokenizer, batch_size=4, max_seq_len=300)\n",
    "next(train_dataset.create_dict_iterator())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "18549ba51c7262c7",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-09T16:18:07.046631Z",
     "start_time": "2025-05-09T16:18:07.019485Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "21128"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(tokenizer)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1e05fe589e2eeae8",
   "metadata": {},
   "source": [
    "# 模型构建"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "419128d8ef08be2b",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-09T16:18:07.155485Z",
     "start_time": "2025-05-09T16:18:07.142488Z"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "from mindnlp.core.nn import functional as F\n",
    "from mindnlp.transformers import GPT2LMHeadModel\n",
    "class GPT2ForSummarization(GPT2LMHeadModel):\n",
    "    def forward(\n",
    "        self,\n",
    "        input_ids = None,\n",
    "        attention_mask = None,\n",
    "        labels = None\n",
    "    ):\n",
    "        outputs = super().forward(input_ids=input_ids,attention_mask=attention_mask)\n",
    "        shift_logits = outputs.logits[...,:-1,:]\n",
    "        shift_labels = labels[...,1:]\n",
    "        loss = F.cross_entropy(shift_logits.view(-1,shift_logits.shape[-1]),shift_labels.view(-1),ignore_index=tokenizer.pad_token_id)\n",
    "        return (loss, )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "3880a0811b930cb1",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-09T16:18:13.992785Z",
     "start_time": "2025-05-09T16:18:07.190490Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "GPT2LMHeadModel has generative capabilities, as `prepare_inputs_for_generation` is explicitly overwritten. However, it doesn't directly inherit from `GenerationMixin`.`PreTrainedModel` will NOT inherit from `GenerationMixin`, and this model will lose the ability to call `generate` and other related functions.\n",
      "  - If you are the owner of the model architecture code, please modify your model class such that it inherits from `GenerationMixin` (after `PreTrainedModel`, otherwise you'll get an exception).\n",
      "  - If you are not the owner of the model architecture class, please contact the model code owner to update it.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[MS_ALLOC_CONF]Runtime config:  enable_vmm:True  vmm_align_size:2MB\n"
     ]
    }
   ],
   "source": [
    "num_epochs = 1\n",
    "learning_rate = 1.5e-4\n",
    "warmup_step = 2000\n",
    "max_grad_norm = 1.0\n",
    "num_training_step = num_epochs * train_dataset.get_dataset_size()\n",
    "\n",
    "from mindspore import nn\n",
    "from mindnlp.transformers import GPT2Config\n",
    "\n",
    "config = GPT2Config(vocab_size=len(tokenizer),bos_token_id=tokenizer.cls_token_id,eos_token_id=tokenizer.pad_token_id)\n",
    "model  = GPT2ForSummarization(config)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d527de0373bbc73b",
   "metadata": {},
   "source": [
    "# 模型训练"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "e8b4cf171a476e56",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-09T16:18:14.038786Z",
     "start_time": "2025-05-09T16:18:14.026788Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'number of model parameters: 102068736'"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "'number of model parameters: {}'.format(model.num_parameters())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "653df2c2ffef5e9a",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-09T16:18:14.131792Z",
     "start_time": "2025-05-09T16:18:14.113787Z"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "from mindnlp.engine import TrainingArguments\n",
    "\n",
    "training_args = TrainingArguments(\n",
    "    output_dir='gpt2_summarization',\n",
    "    save_steps=train_dataset.get_dataset_size(),\n",
    "    save_total_limit=3,\n",
    "    logging_steps=1000,\n",
    "    max_steps=num_training_step,\n",
    "    learning_rate=learning_rate,\n",
    "    max_grad_norm=max_grad_norm,\n",
    "    warmup_steps=warmup_step\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "1077ac2f43e08d8c",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-09T16:18:14.178785Z",
     "start_time": "2025-05-09T16:18:14.167787Z"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "from mindnlp.engine import Trainer\n",
    "\n",
    "trainer = Trainer(\n",
    "    model=model,\n",
    "    args=training_args, \n",
    "    train_dataset=train_dataset\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "b6a390f4ad186a58",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-09T16:18:17.009786Z",
     "start_time": "2025-05-09T16:18:14.212784Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "b9abb66814ca49eebf41323fc8a88caf",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "  0%|          | 0/11250 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      ".{'loss': 6.7263, 'learning_rate': 7.5e-05, 'epoch': 0.09}\n",
      ".{'loss': 5.1158, 'learning_rate': 0.00015, 'epoch': 0.18}\n",
      "{'loss': 4.6214, 'learning_rate': 0.00013378378378378378, 'epoch': 0.27}\n",
      "{'loss': 4.3471, 'learning_rate': 0.00011756756756756755, 'epoch': 0.36}\n",
      "{'loss': 4.1121, 'learning_rate': 0.00010135135135135135, 'epoch': 0.44}\n",
      "{'loss': 3.967, 'learning_rate': 8.513513513513513e-05, 'epoch': 0.53}\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "IOPub message rate exceeded.\n",
      "The Jupyter server will temporarily stop sending output\n",
      "to the client in order to avoid crashing it.\n",
      "To change this limit, set the config variable\n",
      "`--ServerApp.iopub_msg_rate_limit`.\n",
      "\n",
      "Current values:\n",
      "ServerApp.iopub_msg_rate_limit=1000.0 (msgs/sec)\n",
      "ServerApp.rate_limit_window=3.0 (secs)\n",
      "\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'loss': 3.7296, 'learning_rate': 5.27027027027027e-05, 'epoch': 0.71}\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "IOPub message rate exceeded.\n",
      "The Jupyter server will temporarily stop sending output\n",
      "to the client in order to avoid crashing it.\n",
      "To change this limit, set the config variable\n",
      "`--ServerApp.iopub_msg_rate_limit`.\n",
      "\n",
      "Current values:\n",
      "ServerApp.iopub_msg_rate_limit=1000.0 (msgs/sec)\n",
      "ServerApp.rate_limit_window=3.0 (secs)\n",
      "\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'loss': 3.5136, 'learning_rate': 4.054054054054054e-06, 'epoch': 0.98}\n",
      "{'train_runtime': 4020.4614, 'train_samples_per_second': 22.385, 'train_steps_per_second': 2.798, 'train_loss': 4.276948361545139, 'epoch': 1.0}\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "TrainOutput(global_step=11250, training_loss=4.276948361545139, metrics={'train_runtime': 4020.4614, 'train_samples_per_second': 22.385, 'train_steps_per_second': 2.798, 'train_loss': 4.276948361545139, 'epoch': 1.0})"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "trainer.train()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "28aa56b9-7614-4f36-a9b7-0ba0414430fe",
   "metadata": {},
   "source": [
    "# 测试"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "df2e3944-c91e-4bfc-9786-c995b2c6a1f1",
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "def process_test_dataset(dataset, tokenizer, batch_size=1, max_seq_len=1024, max_summary_len=100):\n",
    "    def read_map(text):\n",
    "        data = json.loads(text.tobytes())\n",
    "        return np.array(data['article']), np.array(data['summarization'])\n",
    "\n",
    "    def pad(article):\n",
    "        tokenized = tokenizer(text=article, truncation=True, max_length=max_seq_len-max_summary_len)\n",
    "        return tokenized['input_ids']\n",
    "\n",
    "    dataset = dataset.map(read_map, 'text', ['article', 'summary'])\n",
    "    dataset = dataset.map(pad, 'article', ['input_ids'])\n",
    "    \n",
    "    dataset = dataset.batch(batch_size)\n",
    "\n",
    "    return dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "63b4cb89-913a-4c5a-9e2b-1c1132b019d9",
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "batched_test_dataset = process_test_dataset(test_dataset, tokenizer, batch_size=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "6e858bd6-6dc8-44f5-a50e-5ebdc0c3ce9d",
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[array([[  101,   405,   133,   100,   135,   406,   133,   100,   135,\n",
       "           711,   749,  4509,  1096,  8024,  1453,  4265,  3154,  6821,\n",
       "           763,  2399,  3341,  2832,  6853,   749,   679,  2208,  6401,\n",
       "          4307,   511,   100,  5815,  5389,   100,   100,  2398,  1353,\n",
       "           100,   100,  1086,  5815,  5389,   100,   100,  1086,  2398,\n",
       "          1353,   100,  8024,  6821,  3221,  1724,  2335,  4689,  6809,\n",
       "          2336,  2356,  6809,  1344,  3777,  2356,  7252,  1278,  4495,\n",
       "          1453,  4265,  3154,  8020,  4385,  1399,  1453,  6230,  3154,\n",
       "          8021,  8114,  2399,  4638,  6901,  6878,   511,  8715,  2399,\n",
       "          4638,   100,   698,  2802,   100,   704,  8024,  1453,  4265,\n",
       "          3154,  6158,   809,  2866,  1297,   782,  1366,  5389,  1469,\n",
       "          6400,  7745,  5389,  1161,  1152,  8115,  2399,  8039,  1057,\n",
       "          4328,   126,  2399,  1914,  1400,  8024,  5815,  3121,  1161,\n",
       "          3300,  3309,  2530,  1152,   125,  2399,  8024,  2533,   809,\n",
       "          1139,  4328,  8039,  5307,  1914,  3613,  4509,  6401,  8024,\n",
       "          1453,  6158,  1161,  1905,  1048,   750,  1152,   752,  1905,\n",
       "          5385,  8039,  8432,  2399,  8024,  6809,  1344,  3791,  7368,\n",
       "          2146,  1440,  1453,  4265,  3154,  3187,  5389,  8039,   679,\n",
       "          3160,  8024,  8258,  2399,  8024,   800,  1316,  1086,  3613,\n",
       "          1728,  1398,   671,   752,  2141,  5815,  1152,   697,  2399,\n",
       "          8039,  4684,  1168,  8151,  2399,  2399,  2419,  8024,  1724,\n",
       "          2335,  4689,  7770,  7368,  2990,  2144,  3634,  3428,  8024,\n",
       "          1453,  4265,  3154,  2798,  5815,  2533,  3297,  5303,  4638,\n",
       "          2398,  1353,   511,  5885,  1096,  8114,  2399,  8024,  1453,\n",
       "          4265,  3154,  4266,  3678,  1352,   767,   510,   680,  1988,\n",
       "          4895,  2042,   511,  1963,   791,  2823,  1726,   749,  3926,\n",
       "          4635,  8024,  1453,  4265,  3154,  2347,  2399,  6874,  5709,\n",
       "          4508,  8024,   800,  4509,  6435,  2612,  1908,  2339,   868,\n",
       "           510,  6133,  1355,  2339,  6598,  8024,  6826,  6826,  2533,\n",
       "           679,  1168,  6237,  1104,  8024,  5445,  7001,  6863,  1096,\n",
       "          3428,  4638,  1993,   868,   920,  5442,   738,  3313,  6158,\n",
       "          6841,  6569,   511,   460,  7607,  3341,  3566,  4877,   133,\n",
       "           100,   135,  6158,  2900,  2866,  1297,   782,  1366,  6901,\n",
       "          6866,  2936,  9258,  2399,  8024,  1453,  4265,  3154,  1139,\n",
       "          4495,  1762,   671,   702,   704,  1278,   686,  2157,  8024,\n",
       "           800,   794,  2207,  2218,  6656,  7390,  4266,   779,  2110,\n",
       "           704,  1278,  8024,  3221,  2157,   837,  1282,   676,   807,\n",
       "           704,  1278,   837,   782,   511,  1453,  4265,  3154,  2970,\n",
       "          4266,   779,  4638,  4408,  1168,  6809,  1344,  3777,  2356,\n",
       "          7252,  1310,  4495,  7368,  2339,   868,  8024,  1044,  1400,\n",
       "          1762,  6809,  1344,  1310,  3413,   510,   704,  1278,  2110,\n",
       "          3413,  2110,   739,   511,   671,  4684,   809,  3341,  8024,\n",
       "          1453,  4265,  3154,  1249,  1939,  1174,  5736,  8024,  1762,\n",
       "          3780,  4545,  4542,  7410,  3325,  4568,  3175,  7481,  1357,\n",
       "          2533,   749,   671,  2137,  4638,  2768,  5327,   511,  1453,\n",
       "          4265,  3154,  6230,  2533,  8024,  1372,  6206,   679,  2586,\n",
       "          1391,  5736,  8024,   800,  2218,  5543,  6814,   677,  1962,\n",
       "          3189,  2094,  8024,   738,  5543,  2376,  1168,  3291,  1914,\n",
       "          4567,   782,   511,   852,  3221,  8024,   671,  2196,  2832,\n",
       "          6853,  1168,  1724,  2335,  6809,  1344,  1062,  2128,  2229,\n",
       "          4638,  3724,  3131,   928,  2199,  1453,  4265,  3154,  5401,\n",
       "          1962,  4638,  2703,  3307,  2515,  2419,  3039,  3673,   511,\n",
       "          3198,  2399,  8113,  2259,  4638,  6809,  1344,  1957,  2094,\n",
       "          4374,  3424,  4899,  1762,  3724,  3131,   928,   704,  4917,\n",
       "          8024,  1961,  6158,   671,  1399,  1373,   100,  3330,  3312,\n",
       "          1269,   100,  4638,  4511,  2094,  6575,  1297,  1168,  2255,\n",
       "           691,  5464,  1814,  4638,  1093,  3333,   511,   671,  1398,\n",
       "          6158,  2866,  1297,  4638,  6820,  3300,  1961,  4638,  1398,\n",
       "          2110,  3330,  5526,  4899,   511,  1062,  2128,  6956,  7305,\n",
       "          2496,  1315,  2128,  2961,  6237,  3131,  8024,  2347,  2577,\n",
       "          2097,  4638,  4374,  3424,  4899,  1780,  2898,  6206,  1726,\n",
       "          1724,  2335,  5439,  2157,  8024,  3330,  5526,  4899,  1156,\n",
       "          2703,  2692,  1762,  2496,  1765,  2128,  2157,  5862,  2787,\n",
       "           511,  6809,  1344,  1062,  2128,  6956,  7305,  2190,  2866,\n",
       "          1297,  3428,  6822,  6121,  6444,  3389,  3198,  1355,  4385,\n",
       "          8024,   100,  3330,  3312,  1269,   100,  3221,  4374,  3424,\n",
       "          4899,  1469,  3330,  5526,  4899,  4638,  1398,  2110,  1107,\n",
       "          5705,  1762,  8785,  2399,   129,  3299,  8108,  3189,   792,\n",
       "          5305,  6371,  6399,  4638,  8024,   100,  3330,  3312,  1269,\n",
       "           100,  4638,  4696,  2141,  1998,  1399,   510,  2339,   868,\n",
       "          1296,   855,   510,  2157,  2431,   857,  1770,  5023,   928,\n",
       "          2622,   679,  6422,  8024,  3187,   794,  3389,  2823,   511,\n",
       "          5445,  3297,  1044,  6371,  6399,   100,  3330,  3312,  1269,\n",
       "           100,  4638,  8024,  3633,  3221,  1107,  5705,  4638,  5643,\n",
       "          5643,   510,  3777,  2356,  7252,  1310,  4495,  7368,  5466,\n",
       "          2339,  1453,  4265,  3154,   511,  1453,  4265,  3154,  4917,\n",
       "          8024,   800,  3221,  8785,  2399,   127,  3299,  1762,  6809,\n",
       "          1344,   704,  1278,  2110,  3413,  6822,   934,  3198,  6371,\n",
       "          6399,   100,  3330,  3312,  1269,   100,  4638,  8024,  1728,\n",
       "           711,  1372,  3221,  4157,  1928,   722,   769,  8024,  2792,\n",
       "           809,  3766,  7309,  6814,  2190,  3175,  1998,  1399,   511,\n",
       "          1398,  2399,   129,  3299,  8110,  3189,  8024,  1453,  4265,\n",
       "          3154,  1762,  1343,  3636,  3727,  4638,  4125,  6756,   677,\n",
       "           680,  4374,  3424,  4899,   510,  3330,  5526,  4899,  1469,\n",
       "          2372,  1961,   812,   100,  1343,  3777,  1266,  2823,  2339,\n",
       "           868,   510,  2823,  4511,  3301,  1351,   100,  4638,   100,\n",
       "          3330,  3312,  1269,   100,  5023,   124,   782,  4685,  6878,\n",
       "           511,  1453,  2496,  3198,  3221,  1343,  3959,  1298,  4692,\n",
       "          3678,   779,  8024,   852,  3373,   679,   857,  3330,  5526,\n",
       "          4899,  6206,  3724,  1071,  2844,  6843,  4638,  6206,  3724,\n",
       "          8024,   912,  7390,   124,   782,  3341,  1168,  2255,   691,\n",
       "          5464,  1814,   511,  1453,  4265,  3154,  6819,  1726,  3198,\n",
       "          8024,   100,  3330,  3312,  1269,   100,  5314,   749,   800,\n",
       "          8195,  1039,  7178,  8024,  6375,   800,  2897,  1343,  5709,\n",
       "           511,  4507,   754,   722,  1184,   800,  3295,  3296,   100,\n",
       "          3330,  3312,  1269,   100,  4692,  6814,  4649,  5502,  4567,\n",
       "          8024,  3330,  2400,  3313,  5314,  7178,  8024,  2792,   809,\n",
       "           800,  2218,  3119,   749,   511,  3766,  2682,  1168,  4905,\n",
       "           678,   749,  4877,  3418,   511,  4684,  1168,  6158,  2936,\n",
       "          3198,  1453,  2798,  4761,  6887,  8024,   100,  3330,  3312,\n",
       "          1269,   100,  2199,   697,  1399,  2208,  1957,  1297,  5314,\n",
       "           749,   100,  2398,  1344,   697,  1093,  2787,   711,  1988,\n",
       "          8024,  1066,  1297,  2533, 10838,   102]], dtype=int64),\n",
       " array(['达州：乡村医生获罪入狱申冤30年，两度获刑两度平反，申请恢复工作、补发工资迟迟未能解决；冤案追责无果。'],\n",
       "       dtype='<U51')]"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "next(batched_test_dataset.create_tuple_iterator(output_numpy=True))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "a9e57134-b489-4e20-8e7b-ac0d525d125d",
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "model = GPT2LMHeadModel.from_pretrained('./gpt2_summarization/checkpoint-11250', config=config)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "74c2f96b-6c08-4a7d-ade7-4241d5652ba9",
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "The attention mask and the pad token id were not set. As a consequence, you may observe unexpected behavior. Please pass your input's `attention_mask` to obtain reliable results.\n",
      "Setting `pad_token_id` to `eos_token_id`:0 for open-end generation.\n",
      "The attention mask is not set and cannot be inferred from input because pad token is same as eos token. As a consequence, you may observe unexpected behavior. Please pass your input's `attention_mask` to obtain reliable results.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "."
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "The attention mask and the pad token id were not set. As a consequence, you may observe unexpected behavior. Please pass your input's `attention_mask` to obtain reliable results.\n",
      "Setting `pad_token_id` to `eos_token_id`:0 for open-end generation.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[CLS] ① < [UNK] > ② < [UNK] > 为 了 申 冤 ， 周 爵 斌 这 些 年 来 投 递 了 不 少 诉 状 。 [UNK] 获 罪 [UNK] [UNK] 平 反 [UNK] [UNK] 再 获 罪 [UNK] [UNK] 再 平 反 [UNK] ， 这 是 四 川 省 达 州 市 达 县 河 市 镇 医 生 周 爵 斌 （ 现 名 周 觉 斌 ） 30 年 的 遭 遇 。 1983 年 的 [UNK] 严 打 [UNK] 中 ， 周 爵 斌 被 以 拐 卖 人 口 罪 和 诈 骗 罪 判 刑 15 年 ； 入 狱 5 年 多 后 ， 获 改 判 有 期 徒 刑 4 年 ， 得 以 出 狱 ； 经 多 次 申 诉 ， 周 被 判 处 免 予 刑 事 处 罚 ； 1996 年 ， 达 县 法 院 宣 告 周 爵 斌 无 罪 ； 不 料 ， 2004 年 ， 他 却 再 次 因 同 一 事 实 获 刑 两 年 ； 直 到 2012 年 年 底 ， 四 川 省 高 院 提 审 此 案 ， 周 爵 斌 才 获 得 最 终 的 平 反 。 蒙 冤 30 年 ， 周 爵 斌 父 母 双 亡 、 与 妻 离 婚 。 如 今 找 回 了 清 白 ， 周 爵 斌 已 年 逾 花 甲 ， 他 申 请 恢 复 工 作 、 补 发 工 资 ， 迟 迟 得 不 到 解 决 ， 而 酿 造 冤 案 的 始 作 俑 者 也 未 被 追 责 。 □ 飞 来 横 祸 < [UNK] > 被 指 拐 卖 人 口 遭 逮 捕 1954 年 ， 周 爵 斌 出 生 在 一 个 中 医 世 家 ， 他 从 小 就 跟 随 父 亲 学 中 医 ， 是 家 传 十 三 代 中 医 传 人 。 周 爵 斌 接 父 亲 的 班 到 达 县 河 市 镇 卫 生 院 工 作 ， 先 后 在 达 县 卫 校 、 中 医 学 校 学 习 。 一 直 以 来 ， 周 爵 斌 勤 奋 刻 苦 ， 在 治 疗 疑 难 杂 症 方 面 取 得 了 一 定 的 成 绩 。 周 爵 斌 觉 得 ， 只 要 不 怕 吃 苦 ， 他 就 能 过 上 好 日 子 ， 也 能 帮 到 更 多 病 人 。 但 是 ， 一 封 投 递 到 四 川 达 县 公 安 局 的 求 救 信 将 周 爵 斌 美 好 的 愿 望 彻 底 摧 毁 。 时 年 20 岁 的 达 县 女 子 王 桂 秀 在 求 救 信 中 称 ， 她 被 一 名 叫 [UNK] 李 木 匠 [UNK] 的 男 子 贩 卖 到 山 东 聊 城 的 农 村 。 一 同 被 拐 卖 的 还 有 她 的 同 学 李 胜 秀 。 公 安 部 门 当 即 安 排 解 救 ， 已 怀 孕 的 王 桂 秀 坚 持 要 回 四 川 老 家 ， 李 胜 秀 则 愿 意 在 当 地 安 家 落 户 。 达 县 公 安 部 门 对 拐 卖 案 进 行 调 查 时 发 现 ， [UNK] 李 木 匠 [UNK] 是 王 桂 秀 和 李 胜 秀 的 同 学 冷 芬 在 1981 年 8 月 10 日 介 绍 认 识 的 ， [UNK] 李 木 匠 [UNK] 的 真 实 姓 名 、 工 作 单 位 、 家 庭 住 址 等 信 息 不 详 ， 无 从 查 找 。 而 最 先 认 识 [UNK] 李 木 匠 [UNK] 的 ， 正 是 冷 芬 的 舅 舅 、 河 市 镇 卫 生 院 职 工 周 爵 斌 。 周 爵 斌 称 ， 他 是 1981 年 6 月 在 达 县 中 医 学 校 进 修 时 认 识 [UNK] 李 木 匠 [UNK] 的 ， 因 为 只 是 点 头 之 交 ， 所 以 没 问 过 对 方 姓 名 。 同 年 8 月 12 日 ， 周 爵 斌 在 去 武 汉 的 火 车 上 与 王 桂 秀 、 李 胜 秀 和 带 她 们 [UNK] 去 河 北 找 工 作 、 找 男 朋 友 [UNK] 的 [UNK] 李 木 匠 [UNK] 等 3 人 相 遇 。 周 当 时 是 去 湖 南 看 母 亲 ， 但 架 不 住 李 胜 秀 要 求 其 护 送 的 要 求 ， 便 随 3 人 来 到 山 东 聊 城 。 周 爵 斌 返 回 时 ， [UNK] 李 木 匠 [UNK] 给 了 他 500 元 钱 ， 让 他 拿 去 花 。 由 于 之 前 他 曾 替 [UNK] 李 木 匠 [UNK] 看 过 皮 肤 病 ， 李 并 未 给 钱 ， 所 以 他 就 收 了 。 没 想 到 种 下 了 祸 根 。 直 到 被 捕 时 周 才 知 道 ， [UNK] 李 木 匠 [UNK] 将 两 名 少 女 卖 给 了 [UNK] 平 县 两 农 户 为 妻 ， 共 卖 得 325 [SEP] 周 围 观 看 守 护 照 顾 问 题 ， 被 骗 子 女 孩 子 [UNK] 救 助 下 跪 求 退 休 息 ， 并 没 有 人 ， 称 [UNK] 失 联 系 上 法 律 师 [UNK] 小 周 边 说 法 医 院 [UNK]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "The attention mask and the pad token id were not set. As a consequence, you may observe unexpected behavior. Please pass your input's `attention_mask` to obtain reliable results.\n",
      "Setting `pad_token_id` to `eos_token_id`:0 for open-end generation.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[CLS] 酷 爱 喝 茶 的 广 州 人 要 小 心 ！ 据 悉 ， 一 款 名 为 [UNK] 阿 拉 伯 茶 [UNK] 的 新 型 毒 品 从 去 年 开 始 在 中 国 的 地 下 毒 品 市 场 交 易 中 蔓 延 ， [UNK] 阿 拉 伯 茶 [UNK] 学 名 叫 [UNK] 恰 特 草 [UNK] ， 产 于 非 洲 ， 这 种 植 物 在 刚 摘 下 来 新 鲜 的 时 候 酷 似 市 场 上 常 见 的 苋 菜 ， 吸 毒 者 可 以 直 接 像 吃 生 菜 一 样 嚼 食 ， 如 果 将 恰 特 草 晒 干 ， 外 形 又 像 茶 叶 一 样 ， 但 无 论 是 生 吃 还 是 晒 干 磨 粉 冲 服 ， 服 食 后 的 效 果 竟 然 与 海 洛 因 相 差 无 几 ， 毒 效 惊 人 且 成 瘾 性 大 。 已 被 国 家 列 入 毒 品 范 畴 记 者 从 昨 日 下 午 举 行 的 越 秀 区 [UNK] 拒 绝 毒 品 、 珍 爱 生 命 [UNK] 禁 毒 宣 传 进 社 区 论 坛 活 动 上 还 了 解 到 ， 在 黑 市 上 ， 新 鲜 的 恰 特 草 卖 500 元 一 斤 ， 晒 干 的 恰 特 草 仅 需 200 元 一 斤 ， 由 于 低 廉 的 价 格 和 难 以 辨 别 的 外 表 使 恰 特 草 成 为 了 许 多 瘾 君 子 的 新 宠 。 从 去 年 开 始 ， 国 家 已 经 将 恰 特 草 列 入 毒 品 的 严 打 范 围 之 内 ， 为 了 让 市 民 对 恰 特 草 有 一 定 的 了 解 并 保 持 警 惕 ， 越 秀 区 今 年 将 在 各 个 社 区 的 禁 毒 宣 传 当 中 将 其 列 为 重 点 。 据 介 绍 ， 恰 特 草 产 于 东 非 和 阿 拉 伯 半 岛 等 地 区 ， 属 于 软 性 毒 品 。 除 了 价 格 便 宜 得 惊 人 外 ， 其 外 形 更 具 迷 惑 性 。 [UNK] 稍 不 注 意 就 会 以 为 是 茶 叶 或 者 青 菜 ， 所 以 今 年 我 们 会 在 禁 毒 宣 传 方 面 重 点 介 绍 恰 特 草 。 [UNK] 广 园 路 端 掉 恰 特 草 贩 吸 案 恰 特 草 的 毒 效 与 海 洛 因 一 样 ， 能 使 吸 食 者 产 生 兴 奋 或 产 生 幻 觉 。 工 作 人 员 表 示 ： 虽 然 恰 特 草 生 产 在 非 洲 ， 但 从 去 年 开 始 ， 贩 毒 分 子 利 用 国 际 快 递 等 方 式 将 其 偷 运 入 国 内 ， 由 于 外 形 像 苋 菜 ， 如 果 不 打 醒 十 二 分 精 神 ， 会 很 容 易 被 其 蒙 混 过 关 。 [UNK] 去 年 警 方 在 广 园 路 一 带 破 获 了 一 起 恰 特 草 吸 毒 贩 毒 的 大 案 ， 在 整 整 一 栋 出 租 屋 内 ， 住 了 非 洲 籍 人 士 ， 里 面 放 置 了 大 量 的 恰 特 草 ， 从 贩 毒 到 吸 毒 提 供 一 条 龙 服 务 ， 最 后 被 警 方 一 举 端 掉 了 这 个 毒 窝 。 [UNK] 越 秀 区 禁 毒 委 副 主 任 郭 建 章 表 示 ， 今 年 国 家 已 将 恰 特 草 列 入 毒 品 打 击 范 围 ， 凡 种 植 、 持 有 、 贩 卖 、 走 私 、 服 食 恰 特 草 都 属 于 违 法 犯 罪 行 为 。 市 民 平 日 若 发 现 这 种 毒 品 可 以 举 报 。 越 秀 美 沙 酮 治 疗 在 册 人 数 ： 716 人 昨 日 在 宣 传 活 动 现 场 ， 越 秀 区 社 区 志 愿 者 医 生 徐 暐 杰 告 诉 记 者 ， 目 前 ， 越 秀 区 内 接 受 美 沙 酮 治 疗 的 人 数 有 716 人 ， 其 中 男 性 人 数 居 多 ， 年 龄 大 多 在 35 至 60 岁 之 间 。 今 年 3 月 ， 徐 暐 杰 志 愿 服 务 工 作 室 正 式 成 立 ， 并 推 出 了 针 对 成 长 期 青 少 年 的 [UNK] 红 铃 铛 [UNK] 讲 座 ， 目 的 是 让 更 多 的 青 少 年 了 解 到 新 型 毒 品 的 危 害 ， 自 觉 抵 制 毒 品 。 红 铃 铛 课 堂 主 要 是 在 学 校 内 进 行 科 普 性 的 宣 传 教 育 ， 通 过 讲 座 、 游 戏 以 及 真 实 图 片 的 展 示 对 青 少 年 进 [SEP] 广 东 西 安 排 查 看 守 美 食 品 ， 被 抓 捕 毒 药 品 毒 毒 ， 警 戒 毒 被 查 获 [UNK] 毒 人 吸 引 进 入 侵 权 威 胁 食 毒 案 件 ， 不 少 数 十 几 十 多\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "The attention mask and the pad token id were not set. As a consequence, you may observe unexpected behavior. Please pass your input's `attention_mask` to obtain reliable results.\n",
      "Setting `pad_token_id` to `eos_token_id`:0 for open-end generation.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[CLS] 林 显 杰 正 在 为 妻 子 按 摩 。 < [UNK] > 官 文 涛 < [UNK] > 摄 年 过 半 百 的 丈 夫 患 上 了 精 原 细 胞 瘤 ， 妻 子 又 被 确 诊 患 有 肺 恶 性 肿 瘤 。 岛 城 一 个 普 通 家 庭 半 年 内 接 连 遭 遇 病 魔 打 击 ， 丈 夫 毅 然 决 定 放 弃 治 疗 ， 全 心 全 意 照 顾 患 病 的 妻 子 ， 同 时 准 备 捐 献 遗 体 。 2 日 上 午 ， 在 李 沧 区 华 泰 小 区 ， 记 者 见 到 了 53 岁 的 林 显 杰 ， 身 高 1. 8 米 的 他 显 得 弱 不 禁 风 ， 走 路 爬 楼 都 会 气 喘 吁 吁 ， 还 经 常 咳 嗽 不 停 。 在 和 记 者 聊 了 一 会 儿 后 ， 已 是 中 午 11 点 ， 林 显 杰 跑 进 厨 房 忙 活 起 来 ， 为 正 在 住 院 的 妻 子 准 备 午 饭 。 一 边 是 锅 碗 瓢 盆 的 碰 撞 声 ， 一 边 又 是 刺 耳 的 咳 嗽 声 。 林 显 杰 原 在 一 家 企 业 做 保 安 ， 2014 年 7 月 ， 由 于 确 诊 患 有 精 原 细 胞 瘤 晚 期 ， 不 得 不 办 理 了 病 退 。 由 于 患 的 精 原 细 胞 瘤 属 恶 性 肿 瘤 ， 至 今 没 有 有 效 的 治 疗 手 段 ， 林 显 杰 仅 能 靠 昂 贵 的 药 物 暂 时 维 持 生 命 。 [UNK] 当 初 决 定 捐 献 遗 体 的 时 候 ， 我 咨 询 了 一 下 医 生 ， 知 道 我 的 角 膜 可 以 救 三 个 人 ， 让 他 们 重 见 光 明 。 [UNK] 于 是 ， 林 显 杰 联 系 了 青 岛 市 红 十 字 会 ， 决 定 捐 献 遗 体 和 眼 角 膜 ， 以 帮 助 其 他 患 者 。 不 想 ， 填 写 完 《 捐 献 遗 体 申 请 登 记 表 》 ， 又 一 个 噩 耗 袭 来 ， 今 年 1 月 26 日 ， 妻 子 范 永 梅 确 诊 肺 癌 晚 期 ， 癌 细 胞 已 扩 散 至 淋 巴 。 为 了 攒 钱 给 妻 子 治 病 ， 林 显 杰 停 止 服 用 药 物 ， 也 拒 绝 了 医 生 进 行 手 术 的 建 议 ， 每 天 拖 着 疲 惫 不 堪 的 身 体 ， 全 身 心 照 顾 起 妻 子 。 [UNK] 她 不 喜 欢 吃 太 腻 的 ， 今 天 做 点 茼 蒿 炖 豆 腐 ， 她 最 喜 欢 吃 这 口 。 [UNK] 林 显 杰 将 做 好 的 饭 装 进 饭 盒 带 到 青 岛 市 中 心 医 院 。 病 房 里 ， 妻 子 每 天 要 打 12 个 小 时 的 吊 瓶 。 林 显 杰 一 进 病 房 ， 便 握 起 妻 子 的 手 ， 陪 她 聊 天 ， 不 时 用 手 给 她 理 理 头 发 ， 鼓 励 她 。 私 底 下 ， 林 显 杰 悄 悄 告 诉 记 者 ： [UNK] 等 到 合 适 的 时 机 ， 我 会 劝 说 妻 子 也 捐 献 遗 体 。 [UNK] 在 林 显 杰 家 中 卧 室 的 一 个 角 落 ， 放 着 一 个 装 满 病 历 的 袋 子 ， 还 有 一 本 醒 目 的 红 色 的 《 遗 体 捐 献 荣 誉 证 书 》 。 一 沓 厚 厚 的 病 历 ， 是 他 和 妻 子 做 的 [UNK] 、 胸 透 等 诊 断 结 果 ， [UNK] 这 些 我 都 悄 悄 藏 起 来 ， 瞒 着 孩 子 ， 不 让 他 看 到 ， 免 得 他 分 心 。 说 不 定 哪 天 他 回 到 这 个 家 ， 我 跟 他 妈 妈 都 已 经 不 在 了 [UNK] 。 说 起 还 在 服 兵 役 的 19 岁 的 儿 子 ， 林 显 杰 哽 咽 起 来 。 [SEP] 重 症 监 控 制 作 为 救 助 下 跪 求 救 护 士 捐 赠 送 医 药 自 称 [UNK] 救 人 [UNK] ， 家 长 达 成 功 能 力 救 命 体 内 心 脏 病 人 都 是 否 认 识 别 人 的\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "The attention mask and the pad token id were not set. As a consequence, you may observe unexpected behavior. Please pass your input's `attention_mask` to obtain reliable results.\n",
      "Setting `pad_token_id` to `eos_token_id`:0 for open-end generation.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[CLS] 中 国 新 闻 网 2014 - 08 - 27 < [UNK] > 19 : 31 : 25 这 辆 面 包 车 核 载 7 人 ， 实 载 14 人 ， 其 中 有 10 名 [UNK] 小 候 鸟 [UNK] ， 均 为 在 江 西 鹰 潭 过 暑 假 的 外 来 务 工 者 孩 子 。 秦 静 < [UNK] > 摄 8 月 27 日 下 午 ， 在 济 广 高 速 公 路 黄 金 埠 收 费 站 ， 江 西 省 交 警 总 队 直 属 三 支 队 第 五 大 队 民 警 对 过 往 车 辆 进 行 检 查 时 ， 发 现 一 辆 江 西 牌 照 的 面 包 车 存 在 严 重 超 员 的 情 况 。 这 辆 面 包 车 核 载 7 人 ， 实 载 14 人 ， 其 中 有 10 名 [UNK] 小 候 鸟 [UNK] ， 均 为 在 江 西 鹰 潭 过 暑 假 的 外 来 务 工 者 孩 子 。 车 内 堆 满 行 李 ， 拥 挤 不 堪 ， 而 且 空 调 也 没 开 ， 非 常 闷 热 。 随 着 暑 假 临 近 尾 声 ， [UNK] 小 候 鸟 [UNK] 陆 陆 续 续 踏 上 返 乡 路 。 部 分 客 车 驾 驶 员 为 了 多 盈 利 ， 选 择 [UNK] 多 拉 快 跑 [UNK] 的 营 运 方 式 ， 导 致 超 员 现 象 不 断 出 现 。 非 营 运 的 微 小 型 面 包 车 主 也 开 始 瞄 上 [UNK] 小 候 鸟 [UNK] 返 迁 ， 伺 机 上 路 违 规 载 客 营 运 。 [SEP] 济 南 ： 车 司 机 开 车 时 速 度 超 200 余 公 里 ， 交 通 过 路 段 时 间 将 开 通 道 路 上 高 峰 时 捷 ， 车 上 车 停 放 在 路 边 停 车 场 时 停 运 行\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "The attention mask and the pad token id were not set. As a consequence, you may observe unexpected behavior. Please pass your input's `attention_mask` to obtain reliable results.\n",
      "Setting `pad_token_id` to `eos_token_id`:0 for open-end generation.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[CLS] 云 南 煤 化 工 集 团 有 限 公 司 副 董 事 长 董 光 辉 接 受 调 查 据 云 南 省 纪 委 消 息 ： 经 云 南 省 委 批 准 ， 云 南 煤 化 工 集 团 有 限 公 司 副 董 事 长 董 光 辉 涉 嫌 严 重 违 纪 ， 目 前 正 在 接 受 组 织 调 查 。 西 南 交 通 建 设 集 团 股 份 有 限 公 司 党 委 书 记 、 董 事 长 谢 其 华 接 受 调 查 据 云 南 省 纪 委 消 息 ： 经 云 南 省 委 批 准 ， 西 南 交 通 建 设 集 团 股 份 有 限 公 司 党 委 书 记 、 董 事 长 谢 其 华 涉 嫌 严 重 违 纪 ， 目 前 正 在 接 受 组 织 调 查 。 （ 云 南 省 纪 委 ） [SEP] 云 港 市 委 原 副 秘 书 长 、 副 总 经 理 、 党 组 成 员 、 局 长 王 建 平 被 开 除 党 籍 处 分 ， 其 已 移 送 司 法 机 关 依 法 处 理 。 [SEP] 中 石 化\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "The attention mask and the pad token id were not set. As a consequence, you may observe unexpected behavior. Please pass your input's `attention_mask` to obtain reliable results.\n",
      "Setting `pad_token_id` to `eos_token_id`:0 for open-end generation.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[CLS] [ 泉 州 新 闻 - 闽 南 网 ] < [UNK] > 闽 南 网 6 月 25 日 讯 < [UNK] > 细 心 的 市 民 可 能 会 发 现 ， 泉 州 市 区 不 少 路 口 的 监 控 设 备 正 在 施 工 。 昨 日 ， 海 都 记 者 从 泉 州 市 交 巡 警 支 队 获 悉 ， 这 些 设 备 是 新 建 、 改 建 的 新 型 电 子 警 察 系 统 ， 已 陆 续 完 成 施 工 ， 并 投 入 使 用 。 新 型 电 子 警 察 系 统 ， 主 要 对 7 类 交 通 违 法 行 为 进 行 自 动 抓 拍 ， 主 要 通 过 视 频 图 像 分 析 ， 来 自 动 监 测 图 像 中 过 往 车 辆 的 行 驶 轨 迹 ， 进 而 判 别 车 辆 是 否 违 规 。 与 传 统 的 电 子 警 察 设 备 相 比 ， 它 可 识 别 的 交 通 违 法 行 为 更 多 、 识 别 率 更 高 。 违 反 禁 止 标 线 指 示 压 车 道 实 线 行 驶 [UNK]. 1 违 反 禁 止 标 线 指 示 压 车 道 实 线 行 驶 案 例 ： 6 月 11 日 13 点 52 分 ， 南 环 路 笋 江 路 口 ， 一 辆 白 色 轿 车 在 通 过 红 绿 灯 路 口 时 ， 压 在 直 行 车 道 和 左 转 （ 掉 头 ） 车 道 中 间 的 实 线 行 驶 。 虽 然 ， 该 车 在 直 行 灯 为 绿 灯 时 直 行 ， 但 其 压 线 行 为 同 样 违 法 。 提 醒 ： 路 口 导 向 车 道 均 施 划 为 实 线 ， 车 辆 进 入 导 向 车 道 后 ， 不 得 随 意 变 更 车 道 或 跨 压 实 线 ， 否 则 会 被 电 子 警 察 以 [UNK] 违 反 禁 止 标 线 指 示 压 车 道 实 线 行 驶 [UNK] 抓 拍 。 违 反 禁 止 左 转 指 示 标 志 [UNK]. 2 违 反 禁 止 左 转 指 示 标 志 案 例 ： 6 月 11 日 11 点 48 分 ， 涂 门 街 ， 一 辆 红 色 轿 车 ， 在 设 有 禁 止 左 转 指 示 标 志 的 情 况 下 ， 跨 越 双 实 线 ， 违 规 左 转 。 据 悉 ， 市 区 各 个 禁 止 左 转 路 口 已 逐 步 安 装 了 专 门 的 禁 左 电 子 警 察 。 提 醒 ： 该 行 为 同 样 是 违 反 禁 令 指 示 标 志 。 违 反 禁 止 标 线 指 示 逆 向 行 驶 [UNK]. 3 违 反 禁 止 标 线 指 示 逆 向 行 驶 案 例 ： 6 月 11 日 15 点 58 分 ， 南 环 路 笋 江 路 口 ， 一 辆 小 车 在 左 拐 过 程 中 ， 并 未 进 入 应 该 驶 入 的 车 道 ， 而 是 直 接 进 入 逆 向 车 道 的 左 拐 车 道 逆 行 。 车 辆 在 通 过 路 口 时 ， 应 严 格 遵 守 路 面 标 线 指 示 ， 不 要 轻 易 跨 压 出 口 道 中 心 实 线 或 驶 入 对 向 车 道 内 ， 否 则 会 以 逆 向 行 驶 抓 拍 。 提 醒 ： 按 照 规 定 ， 机 动 车 逆 向 行 驶 ， 可 罚 100 元 或 警 告 ， 记 3 分 。 机 动 车 通 过 有 灯 控 路 口 时 ， 不 按 所 需 行 进 方 向 驶 入 导 向 车 道 [UNK]. 4 机 动 车 通 过 有 灯 控 路 口 时 ， 不 按 所 需 行 进 方 向 驶 入 导 向 车 道 案 例 ： 6 月 11 日 16 点 19 分 ， 在 南 环 路 笋 江 路 口 ， 一 辆 白 色 小 车 原 本 必 须 按 直 行 方 向 驶 入 直 行 车 道 通 过 路 口 ， 但 却 占 用 左 转 车 道 直 行 。 即 使 路 口 直 行 、 左 转 信 号 灯 均 为 绿 灯 ， 其 行 为 也 构 成 [UNK] 通 过 有 灯 控 路 口 时 ， 不 按 所 需 行 进 方 向 驶 入 导 向 车 道 [UNK] 的 交 通 违 法 。 提 醒 ： 按 照 规 定 ， 该 违 法 行 为 ， 可 罚 100 元 或 警 告 ， 记 2 分 。 驾 驶 机 动 车 违 反 道 路 交 通 信 号 灯 通 行 [UNK]. 5 驾 驶 机 动 车 违 反 道 路 交 通 信 号 灯 通 行 案 例 ： 6 月 21 日 13 点 09 [SEP] 南 通 道 交 警 方 案 ， 被 查 处 理 工 作 案 件 被 处 罚 单 位 被 罚 款 ， 警 戒 线 路 段 时 间 可 以 及 时 停 车 行 政 拘 留 在 路 线 电 话 ， 无 线\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "The attention mask and the pad token id were not set. As a consequence, you may observe unexpected behavior. Please pass your input's `attention_mask` to obtain reliable results.\n",
      "Setting `pad_token_id` to `eos_token_id`:0 for open-end generation.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[CLS] 新 浪 科 技 讯 < [UNK] > 5 月 5 日 消 息 ， e 代 驾 今 日 宣 布 完 成 了 [UNK] 轮 的 融 资 ， 融 资 额 度 为 1 亿 美 元 ， e 代 驾 官 方 称 ， 融 资 完 成 后 公 司 整 体 估 值 为 8 亿 美 元 。 据 了 解 ， 本 轮 投 资 由 美 国 华 平 投 资 集 团 领 投 ， 之 前 的 投 资 方 经 纬 创 投 、 光 速 安 振 创 投 跟 投 ， 泰 合 资 本 担 任 本 次 交 易 的 独 家 财 务 顾 问 。 对 于 本 轮 融 资 的 用 途 ， e 代 驾 [UNK] 杨 家 军 表 示 ， 将 用 于 加 强 产 品 技 术 和 服 务 上 的 投 入 。 据 了 解 ， e 代 驾 成 立 于 2011 年 ， 现 在 已 经 覆 盖 北 京 、 上 海 、 广 州 、 深 圳 等 全 国 150 个 城 市 ， 司 机 达 8 万 名 ， 单 日 高 峰 订 单 超 过 12 万 。 ( 伊 凡 ) [SEP] 快 讯 ： 中 国 移 动 全 球 最 高 通 信 息 公 布 ， 公 告 称 将 于 今 年 1 月 1 日 起 正 式 启 动 。 [SEP] 外 媒 称 [UNK] 股 价 值 得 注 册 资 金 额 达 到\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "The attention mask and the pad token id were not set. As a consequence, you may observe unexpected behavior. Please pass your input's `attention_mask` to obtain reliable results.\n",
      "Setting `pad_token_id` to `eos_token_id`:0 for open-end generation.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[CLS] 2015 - 03 - 04 < [UNK] > 17 : 27 < [UNK] > 第 一 财 经 日 报 < [UNK] > 显 示 图 片 您 的 浏 览 器 不 支 持 video 标 签 。 【 姚 明 ： 有 很 多 孩 子 的 体 育 真 是 语 文 老 师 教 的 】 全 国 政 协 委 员 姚 明 在 体 育 界 别 小 组 讨 论 会 上 说 ： [UNK] 说 某 人 语 文 不 好 ， 会 说 [UNK] 你 的 语 文 是 体 育 老 师 教 的 [UNK] ， 这 是 个 笑 话 。 但 实 际 情 况 是 ， 有 很 多 孩 子 的 体 育 真 是 语 文 老 师 教 的 [UNK] 。 本 次 会 议 姚 明 带 来 推 广 专 项 体 育 课 的 提 案 。 [SEP] 组 图 ： 中 国 教 育 部 副 主 任 李 小 平 被 指 为 教 师 ， 称 [UNK] 不 会 [UNK] ； 此 前 有 媒 体 报 道 称 有 关 部 门 正 在 进 行 调 查 ( 图 ) [SEP] 【 头\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "The attention mask and the pad token id were not set. As a consequence, you may observe unexpected behavior. Please pass your input's `attention_mask` to obtain reliable results.\n",
      "Setting `pad_token_id` to `eos_token_id`:0 for open-end generation.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[CLS] 发 布 日 期 ： 2015 - 01 - 29 < [UNK] > 17 : 02 : 42 【 字 体 ： 】 湖 北 省 孝 感 市 气 象 台 2015 年 1 月 29 日 17 时 02 分 继 续 发 布 道 路 结 冰 黄 色 预 警 信 号 ： 预 计 今 晚 到 明 天 上 午 ， 孝 感 大 部 地 区 可 能 出 现 对 交 通 有 影 响 的 道 路 结 冰 ， 请 注 意 防 范 。 图 例 标 准 防 御 指 南 当 路 表 温 度 低 于 0℃ ， 出 现 降 水 ， 12 小 时 内 可 能 出 现 对 交 通 有 影 响 的 道 路 结 冰 。 1. 交 通 、 公 安 等 部 门 要 按 照 职 责 做 好 道 路 结 冰 应 对 准 备 工 作 ； 2. 驾 驶 人 员 应 当 注 意 路 况 ， 安 全 行 驶 ； 3. 行 人 外 出 尽 量 少 骑 自 行 车 ， 注 意 防 滑 。 [SEP] 辽 宁 省 发 改 委 路 冰 雪 橙 色 受 降 雪 天 气 ， 受 积 雪 和 冷 空.. [SEP] 河 北 地 方 地 面 温 黄 河 市 发 生 严 重 雪 ， 预 报 告 ： 受 较 低 温\n",
      "[CLS] 镇 江 古 嘉 定 桥 < [UNK] > 古 代 漕 渠 名 桥 之 一 ， 清 代 重 修 ， 后 被 拆 顶 、 填 埋 。 < [UNK] > 本 报 张 叶 制 图 < [UNK] > 8 月 中 旬 刚 刚 被 挖 掘 出 的 古 嘉 定 桥 遗 迹 现 场 。 < [UNK] > 中 国 江 苏 网 9 月 15 日 讯 8 月 中 旬 ， 在 镇 江 中 山 东 路 施 工 现 场 被 挖 掘 出 的 嘉 定 桥 遗 迹 ， 备 受 各 界 关 注 。 镇 江 文 物 部 门 考 证 确 定 为 宋 代 嘉 定 桥 后 ， 路 面 施 工 方 一 度 调 整 方 案 改 道 施 工 。 这 让 镇 江 市 民 以 为 ， 古 桥 遗 址 有 望 在 通 道 建 成 后 做 展 示 性 保 护 。 不 过 ， 最 新 情 况 有 所 变 化 ， 在 综 合 多 方 面 因 素 考 虑 后 ， 镇 江 文 物 部 门 最 终 决 定 将 此 宋 代 嘉 定 桥 遗 址 进 行 掩 埋 保 护 ， 并 且 连 日 来 已 经 付 诸 实 施 ， 保 护 工 程 施 工 已 近 尾 声 。 通 讯 员 晓 欢 扬 子 晚 报 全 媒 体 记 者 万 凌 云 现 有 数 据 桥 面 略 呈 弧 状 隆 起 ， 宽 约 10 米 拆 顶 后 东 西 两 部 分 对 称 桥 基 各 长 6 米 左 右 ； 相 距 约 6 米 推 测 数 据 以 桥 墩 距 离 可 推 算 桥 孔 直 径 应 大 于 6 米 ， 桥 长 在 18 米 以 上 商 业 街 施 工 挖 出 古 嘉 定 桥 遗 址 8 月 18 日 ， 镇 江 中 山 东 路 地 下 商 业 街 施 工 过 程 中 挖 出 古 桥 遗 迹 3 天 后 ， 扬 子 晚 报 记 者 来 到 位 于 镇 江 第 一 楼 街 的 古 桥 址 现 场 看 到 ， 镇 江 第 一 楼 街 交 叉 口 的 中 山 东 路 路 面 已 被 开 挖 了 三 四 十 米 长 ， 这 里 属 于 镇 江 中 山 东 路 地 下 商 业 街 工 程 的 一 部 分 。 记 者 注 意 到 ， 因 为 考 古 人 员 的 接 连 勘 探 、 发 掘 ， 古 桥 灰 白 色 桥 墩 裸 露 部 分 看 上 去 很 新 。 现 场 的 镇 江 考 古 所 工 作 人 员 霍 强 告 诉 记 者 ， 经 过 两 天 的 简 单 清 理 和 梳 理 ， 他 们 已 经 推 断 该 桥 体 为 宋 代 嘉 定 桥 遗 迹 。 据 了 解 ， 嘉 定 桥 曾 是 镇 江 城 内 古 运 河 上 的 桥 梁 ， 从 宋 代 一 直 延 续 到 民 国 ， 此 后 随 着 省 会 迁 移 ， 古 运 河 被 掩 埋 ， 嘉 定 桥 也 随 之 被 废 弃 。 镇 江 市 文 广 新 局 文 物 处 处 长 张 小 军 告 诉 记 者 ， 这 次 发 现 的 是 嘉 定 桥 基 础 的 一 个 遗 迹 ， 分 东 边 和 西 边 ， 两 个 是 相 对 的 ， 中 间 相 隔 大 概 6 米 ， 埋 藏 在 地 下 约 2. 5 米 深 。 1999 年 就 曾 有 部 分 桥 体 被 发 掘 事 实 上 ， 早 在 1999 年 镇 江 五 条 街 振 华 工 地 考 古 时 ， 就 曾 发 现 嘉 定 桥 东 段 遗 迹 。 当 年 披 露 的 考 古 发 掘 信 息 显 示 ， 在 振 华 工 地 数 米 深 处 ， 考 古 揭 示 的 部 分 为 嘉 定 桥 东 侧 桥 体 。 砖 桥 侧 面 平 砖 叠 砌 ， 石 灰 粘 缝 ， 缝 隙 严 密 ， 砌 造 精 良 。 桥 面 略 呈 弧 状 隆 起 ， 宽 约 10 米 ， 显 露 出 的 东 侧 桥 体 部 分 长 约 6 米 。 桥 面 自 东 向 西 呈 斜 坡 状 高 起 ， 并 以 三 道 竖 向 铺 设 的 立 砖 将 桥 面 等 分 为 四 ， 形 成 并 排 的 四 条 车 道 ， 砖 面 上 车 轧 足 磨 的 痕 迹 隐 约 可 见 。 该 桥 的 走 向 与 现 在 镇 江 市 区 主 干 道 中 山 东 路 和 中 山 西 路 重 叠 。 镇 江 市 考 古 专 家 刘 建 国 主 编 的 《 名 城 地 下 的 名 城 [UNK] [UNK] 镇 江 城 市 考 古 纪 实 》 [SEP] 组 图 文 化 遗 体 遗 书 记 录 取 得 知 情 报 告 知 书 ， 称 [UNK] 不 同 时 尚 未 来 自 主 题 为 [UNK] 土 地 [UNK] 遗 失 踪 影 响 应 称 ， 不 少 年 纪 录 像 [UNK]\n"
     ]
    }
   ],
   "source": [
    "model.set_train(False)\n",
    "i = 0\n",
    "for (input_ids, raw_summary) in batched_test_dataset.create_tuple_iterator():\n",
    "    output_ids = model.generate(input_ids, max_new_tokens=50, num_beams=5, no_repeat_ngram_size=2)\n",
    "    output_text = tokenizer.decode(output_ids[0].tolist())\n",
    "    print(output_text)\n",
    "    i += 1\n",
    "    if i == 10:\n",
    "        break"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.21"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
